home *** CD-ROM | disk | FTP | other *** search
- /*
- ARTemis (Graphic Editor for FM-TOWNS)
-
- (c) MATSUUCHI Ryosuke 1992,1993,1994,1995
-
- arealist.c
- 領域リストを管理するモジュール (objectively designed)
-
- ALnew Arealist を生成する
- ALdelete(al) Arealist を消滅させる
- ALaddarea(al,area) Arealist 内のリストに Area を追加する
- ALdeletearea(al) 最後に追加した Area を削除する
- ALgetfirstarea(al) Arealist 内のリストの先頭の Area を得る
- ALgetnextarea(al) リスト内の次の Area を得る
- */
-
- #include <stdio.h>
- #include <malloc.h>
- #include "arealist.h"
-
- Arealist *ALnew()
- {
- Arealist *al;
- if ((al = malloc(sizeof(Arealist))) == NULL)
- return NULL;
- al->arealist = NULL;
- al->curarea = NULL;
- return al;
- }
-
- void ALdelete(Arealist *al)
- {
- if (al == NULL)
- return;
- Area *p,*t;
- for (p=al->arealist,t=p->next; p!=NULL; p=t,t=(t==NULL?NULL:t->next))
- free(p);
- free(al);
- }
-
- Area *ALaddarea(Arealist *al, Area *area)
- {
- Area *new;
- if ((new = malloc(sizeof(Area))) == NULL)
- return NULL;
- *new = *area;
- new->next = al->arealist;
- al->arealist = new;
- return new;
- }
-
- void ALdeletearea(Arealist *al)
- {
- if (al->arealist == NULL)
- return;
- Area *t;
- t = al->arealist;
- al->arealist = al->arealist->next;
- free(t);
- }
-
- Area *ALgetfirstarea(Arealist *al)
- {
- al->curarea = al->arealist;
- return al->curarea;
- }
-
- Area *ALgetnextarea(Arealist *al)
- {
- if (al->curarea == NULL)
- return NULL;
- al->curarea = al->curarea->next;
- return al->curarea;
- }
-
- void ALarea_setdata(Area *area, void *data)
- {
- area->data = data;
- }
-
- void *ALarea_getdata(Area *area)
- {
- return area->data;
- }
-
- /* end of arealist.c */
-